#include "gui/SubWindow/ViewModifyClassInfoWin.h"
#include <iostream>
#include "gtkmm/stock.h"

ViewModifyClassInfoWin::ViewModifyClassInfoWin(Clase* comp) :
        m_mainFrame("Propiedades"),
		m_componentNameLabel("Nombre del componente"),
		m_typeLabel("Tipos")

{
	m_component = comp;

	set_title("Informacion de la clase");

	//get_vbox()->pack_start(m_mainFrame, Gtk::PACK_EXPAND_WIDGET, 5);
	get_vbox()->pack_start(m_Notebook, Gtk::PACK_EXPAND_WIDGET, 5);


    tabClase.insertarse(m_Notebook);
    tabAtributos.insertarse(m_Notebook);
    tabMetodos.insertarse(m_Notebook);

    tabClase.inicializar(m_component->getName(),comp->getClassType());
    tabAtributos.inicializarAtributos(m_component->getAtributos());
    tabMetodos.inicializarMetodos(m_component->getMetodos());


	add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK);
	add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
}

ViewModifyClassInfoWin::~ViewModifyClassInfoWin() {
}

int ViewModifyClassInfoWin::run(){

	show_all();
	int res = Gtk::Dialog::run();
	if ( res == Gtk::RESPONSE_OK){
		m_component->setName(tabClase.getCajaNombreContenido());
		if(tabClase.esAbstracta())
			m_component->setClassType(ABSTRACT);
		else if(tabClase.esInterfaz())
			m_component->setClassType(INTERFACE);
		else
			m_component->setClassType(NORMAL);

		m_component->intercambiarAtributos(tabAtributos.getAtributos());
		m_component->intercambiarMetodos(tabMetodos.getMetodos());
	}
	return 1;
}

void ViewModifyClassInfoWin::addAttribute(std::string tipoDato, Visibilidad visibilidad, std::string nombre, bool estatico, std::string valor){
	m_component->addAtributo(new Atributo(tipoDato, visibilidad, nombre, estatico, valor));
}
